Hi Eric,
If the change in direction between straight feeds is less than the "Break Angle" setting then the axes should not stop.
After setting the Break Angle a call to:
KM_dotnet_Interop_CoordMotion_SetTPParams()
may be required to get the New Break Angle Setting to "take". Some of our examples may be missing this.
HTH Regards TK
Group: DynoMotion |
Message: 8344 |
From: eric_bassett@ymail.com |
Date: 9/13/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Tom,
Thank you for your response. It works fine now, but seems like b and c in an xyzabc coordinate system are flipped. If I call:
DefineCoordSystem6(1,3,2,4,7,6);
in a thread on the KFLOP, the CM.Straightfeed runs as (1,3,2,4,6,7) in: //MOTION PARAM SETUP
int N = 2000; CM.MotionParams.BreakAngle = 50; CM.MotionParams.MaxAccelX = 10000; CM.MotionParams.MaxAccelY = 10000; CM.MotionParams.MaxAccelZ = 10000; CM.MotionParams.MaxAccelA = 10000; CM.MotionParams.MaxAccelB = 10000; CM.MotionParams.MaxAccelC = 10000; CM.MotionParams.MaxVelX = 1000; CM.MotionParams.MaxVelY = 1000; CM.MotionParams.MaxVelZ = 1000; CM.MotionParams.MaxVelA = 1000; CM.MotionParams.MaxVelB = 1000; CM.MotionParams.MaxVelC = 1000; CM.MotionParams.CountsPerInchX = 5.555; CM.MotionParams.CountsPerInchY = 200; CM.MotionParams.CountsPerInchZ = 11.11; CM.MotionParams.CountsPerInchA = 5.555; CM.MotionParams.CountsPerInchB = 200; CM.MotionParams.CountsPerInchC = 11.11; CM.SetTPParams();
//CLEAR BUFFER AND MOVE TO 0
CM.FlushSegments(); CM.StraightFeed(coordSpeed, 0, 0, 0, 0, 0, 0, 0, 0); //MOVE TO N*0.1 ON AXES 2 AND 6 //DefineCoordSystem6(1,3,2,4,7,6);
for (int i = 0; i < N; i++) { CM.StraightFeed(5, 0, 0, -i * 0.1, 0, i * 0.1, 0, 0, 0);
} CM.WaitForSegmentsFinished(true); CM.FlushSegments(); CM.Dispose();
Does defining the coordinate system in C and using in C # work? The b and c of 6 axis coordinate system are flipped when I do it this way.
Thanks,
Eric --- In DynoMotion@yahoogroups.com, <dynomotion@yahoogroups.com> wrote: Hi Eric,
If the change in direction between straight feeds is less than the "Break Angle" setting then the axes should not stop.
After setting the Break Angle a call to:
KM_dotnet_Interop_CoordMotion_SetTPParams()
may be required to get the New Break Angle Setting to "take". Some of our examples may be missing this.
HTH Regards TK
Group: DynoMotion |
Message: 8345 |
From: Tom Kerekes |
Date: 9/13/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric, What Version are you using? What order are you doing things? How do you how the axes are mapped? Regards TK
Group: DynoMotion |
Message: 8354 |
From: eric_bassett@ymail.com |
Date: 9/14/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
I am using version 4.30. I map the axes (8-15) to channels 0-7 then define the coordinate system. The KFLOP is connected to a KANALOG. All of the mapping and defining are done in c programs. I can check that the axes are mapped correctly using jogs in the console. After this runs, I load a group of points to a c# array, create a new CM object, set breakangle, speeds, and counts per inch then run the straightfeeds.
I am not sure how to check how the coordinate system is defined. Is the channel mapping something I can query? I recall seeing a GetAxisDefinitions() command, but have not used it.
Forgive any typing errors, I'm on my phone.
--- In DynoMotion@yahoogroups.com, Tom Kerekes <tk@...> wrote:
>
> Hi Eric,
>
> What Version are you using?
>
> What order are you doing things?
>
> How do you how the axes are mapped?
>
> Regards
> TK
>
>
>
>
> ________________________________
> From: "eric_bassett@..." <eric_bassett@...>
> To: DynoMotion@yahoogroups.com
> Sent: Friday, September 13, 2013 2:04 PM
> Subject: RE: Re: [DynoMotion] Create smooth path with Coordinated Motion
>
>
>
> Â
> Tom,
>
> Thank you for your response. It works fine now, but seems like b and c in an xyzabc coordinate system are flipped. If I call:
>
> DefineCoordSystem6(1,3,2,4,7,6);Â
>
> in a thread on the KFLOP, the CM.Straightfeed runs as (1,3,2,4,6,7) in:
> //MOTION PARAM SETUP
> Â Â Â Â Â Â Â Â int N = 2000;
> Â Â Â Â Â Â Â Â CM.MotionParams.BreakAngle = 50;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelX = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelY = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelZ = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelA = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelB = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxAccelC = 10000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelX = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelY = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelZ = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelA = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelB = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.MaxVelC = 1000;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchX = 5.555;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchY = 200;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchZ = 11.11;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchA = 5.555;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchB = 200;
> Â Â Â Â Â Â Â Â CM.MotionParams.CountsPerInchC = 11.11;
> Â Â Â Â Â Â Â Â CM.SetTPParams();
>
> //CLEAR BUFFER AND MOVE TO 0
> Â Â Â Â Â Â Â Â CM.FlushSegments();
> Â Â Â Â Â Â Â Â CM.StraightFeed(coordSpeed, 0, 0, 0, 0, 0, 0, 0, 0);
> //MOVE TO N*0.1 ON AXES 2 AND 6Â Â Â Â Â //DefineCoordSystem6(1,3,2,4,7,6);Â Â Â Â
> for (int i = 0; i < N; i++)Â
> Â Â Â Â Â {
> >Â Â Â Â Â CM.StraightFeed(5, 0, 0, -i * 0.1, 0, i * 0.1, 0, 0, 0);
> >
> >Â Â Â Â Â }
> >Â Â Â Â Â Â Â CM.WaitForSegmentsFinished(true);
> Â Â Â Â Â Â Â Â Â Â Â Â CM.FlushSegments();
> Â Â Â Â Â Â Â Â Â Â Â Â CM.Dispose();
>
> Does defining the coordinate system in C and using in C # work? The b and c of 6 axis coordinate system are flipped when I do it this way.
>
> Thanks,
>
> Eric
>
>
> --- In DynoMotion@yahoogroups.com, <dynomotion@yahoogroups.com> wrote:
>
>
> Hi Eric,
>
> If the change in direction between straight feeds is less than the "Break Angle" setting then the axes should not stop.
>
> After setting the Break Angle a call to:
>
> KM_dotnet_Interop_CoordMotion_SetTPParams()
>
>
> may be required to get the New Break Angle Setting to "take". Â Some of our examples may be missing this.
>
> HTH
> Regards
> TK
>
>
> ________________________________
> From: "eric_bassett@" <eric_bassett@>
> To: DynoMotion@yahoogroups.com
> Sent: Wednesday, September 11, 2013 2:06 PM
> Subject: [DynoMotion] Create smooth path with Coordinated Motion
>
>
>
> Â
> Hello,
>
> Is there a way in C# to build a path of StraightFeeds so that there is not a pause between each coordinated motion? Doing a series of StraightFeed, the axes stop between each move.
>
> Thanks.
>
|
|
Group: DynoMotion |
Message: 8360 |
From: Tom Kerekes |
Date: 9/15/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric,
I'm still a bit confused about your mapping. There are two levels of mapping: #1 Devices (Encoders and DACs) to axes channels and #2 GCode Axes (XYZABC) to Axis Channels.
But anyway there was a bug in V4.30 that maps B Axis to both B and C in some cases. Please try the latest test version to see if that solves your problem:
http://dynomotion.com/Software/KMotion431k.exe
Regards TK
Group: DynoMotion |
Message: 8364 |
From: eric_bassett@ymail.com |
Date: 9/15/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
That sounds almost exactly like what is happening. I will try the latest version. --- In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
I'm still a bit confused about your mapping. There are two levels of mapping: #1 Devices (Encoders and DACs) to axes channels and #2 GCode Axes (XYZABC) to Axis Channels.
But anyway there was a bug in V4.30 that maps B Axis to both B and C in some cases. Please try the latest test version to see if that solves your problem:
http://dynomotion.com/Software/KMotion431k.exe
Regards TK
Group: DynoMotion |
Message: 8383 |
From: eric_bassett@ymail.com |
Date: 9/22/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Tom,
The update fixed the odd B and C axis behavior, but I have run into something new.
I am having an axis stop despite all signs indicating it is still receiving pulses. I set the axis to jog, wait until it is up to speed, and perform a coordinated motion. It works on a smoother coordinated motion, but on a more erratic coordinated motion the axis will jog for a minute or so and then stall.
Is there any software reason this could be happening? KFLOP processor overloaded when the coordinated motion gets kind of crazy?
Thanks. --- In dynomotion@yahoogroups.com, <eric_bassett@...> wrote:
That sounds almost exactly like what is happening. I will try the latest version. --- In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
I'm still a bit confused about your mapping. There are two levels of mapping: #1 Devices (Encoders and DACs) to axes channels and #2 GCode Axes (XYZABC) to Axis Channels.
But anyway there was a bug in V4.30 that maps B Axis to both B and C in some cases. Please try the latest test version to see if that solves your problem:
http://dynomotion.com/Software/KMotion431k.exe
Regards TK
Group: DynoMotion |
Message: 8386 |
From: Tom Kerekes |
Date: 9/23/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric,
It isn't clear what you are doing. An Axis can not be moved both as an independent axis (with a Jog) and as a Coordinated Motion Axis at the same time (even if it remains stationary). Is the axis you are jogging included in the DefineCoordSystem() definition?
I also don't understand what you mean by: "it is still receiving pulses".
Regards TK
Group: DynoMotion |
Message: 8387 |
From: eric_bassett@ymail.com |
Date: 9/23/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
I am jogging a separate axis from the coordinated motion. I believe it is still receiving pulses because the bulk status record continues increasing the current position of the jogged axis. The jogged axis is not included in DefineCoordSystem().
I will hook up a scope this afternoon and make sure the pulses are actually being sent. --- In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
It isn't clear what you are doing. An Axis can not be moved both as an independent axis (with a Jog) and as a Coordinated Motion Axis at the same time (even if it remains stationary). Is the axis you are jogging included in the DefineCoordSystem() definition?
I also don't understand what you mean by: "it is still receiving pulses".
Regards TK
Group: DynoMotion |
Message: 8390 |
From: eric_bassett@ymail.com |
Date: 9/25/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
The scope shows that pulses are being sent at the 800 RPM (~30,000 pulses per second with our steppers), but it looks like the pulses intermittently stop for something on the order of milliseconds (it looks like a blip on the scope). It is long enough for the stepper to get out of sync and stop.
Are we overloading the processing power of the KFLOP by running a jog this fast with coordinated motion on other axes at the same time? ---In dynomotion@yahoogroups.com, <eric_bassett@...> wrote:
I am jogging a separate axis from the coordinated motion. I believe it is still receiving pulses because the bulk status record continues increasing the current position of the jogged axis. The jogged axis is not included in DefineCoordSystem().
I will hook up a scope this afternoon and make sure the pulses are actually being sent. --- In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
It isn't clear what you are doing. An Axis can not be moved both as an independent axis (with a Jog) and as a Coordinated Motion Axis at the same time (even if it remains stationary). Is the axis you are jogging included in the DefineCoordSystem() definition?
I also don't understand what you mean by: "it is still receiving pulses".
Regards TK
Group: DynoMotion |
Message: 8391 |
From: Tom Kerekes |
Date: 9/25/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric,
Processing power should not be the issue and that rate is actually not very fast.
Please post your configuration files and provide a more complete description
of what you are doing. Ideally a way for us to duplicate the problem.
Another option would be to capture the motion of the Jogged Axis and/or the Coordinated Motion Axes with something like the example program: CaptureXYZMotionToFile.c
That would show whether there are any anomalies in any of the trajectories. This
method can sample as fast as every 180us.
Regards TK
Group: DynoMotion |
Message: 8415 |
From: eric_bassett@ymail.com |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Tom,
Please download the zip file at:
https://www.dropbox.com/s/1p8xvay4e2g6g36/20130926%20Lens%20Polisher.zip
The important sections are in the lensMain.cs source at the end in the class "runCoord". This class initializes the coordinated motion (coordinate system is defined in "axisInitialize.c" in the Debug folder. The system runs "sequence.c".
Where the problem occurs, the KFLOP jogs a non-coordinated axis and sets a flag to run Coordinated motion (READY_FOR_CM), the PC runs the coordinated motion (a "for loop" that StraightFeeds an array of points in "runCoord"), the PC sets a flag when complete, and the KFLOP finishes motion. ---In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
Processing power should not be the issue and that rate is actually not very fast.
Please post your configuration files and provide a more complete description
of what you are doing. Ideally a way for us to duplicate the problem.
Another option would be to capture the motion of the Jogged Axis and/or the Coordinated Motion Axes with something like the example program: CaptureXYZMotionToFile.c
That would show whether there are any anomalies in any of the trajectories. This
method can sample as fast as every 180us.
Regards TK
Group: DynoMotion |
Message: 8416 |
From: eric_bassett@ymail.com |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Just found something else out. It works fine with a StraightTraverse but not a StraightFeed.
Does this bring anything to mind? ---In dynomotion@yahoogroups.com, <eric_bassett@...> wrote:
Tom,
Please download the zip file at:
https://www.dropbox.com/s/1p8xvay4e2g6g36/20130926%20Lens%20Polisher.zip
The important sections are in the lensMain.cs source at the end in the class "runCoord". This class initializes the coordinated motion (coordinate system is defined in "axisInitialize.c" in the Debug folder. The system runs "sequence.c".
Where the problem occurs, the KFLOP jogs a non-coordinated axis and sets a flag to run Coordinated motion (READY_FOR_CM), the PC runs the coordinated motion (a "for loop" that StraightFeeds an array of points in "runCoord"), the PC sets a flag when complete, and the KFLOP finishes motion. ---In dynomotion@yahoogroups.com, <tk@...> wrote: Hi Eric,
Processing power should not be the issue and that rate is actually not very fast.
Please post your configuration files and provide a more complete description
of what you are doing. Ideally a way for us to duplicate the problem.
Another option would be to capture the motion of the Jogged Axis and/or the Coordinated Motion Axes with something like the example program: CaptureXYZMotionToFile.c
That would show whether there are any anomalies in any of the trajectories. This
method can sample as fast as every 180us.
Regards TK
Group: DynoMotion |
Message: 8417 |
From: Tom Kerekes |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric,
I see one issue. I believe these function calls are out of order:
CM.WaitForSegmentsFinished(true); CM.FlushSegments();
They should be
CM.FlushSegments();
CM.WaitForSegmentsFinished(true);
The idea is to:
#1 flush any remaining coordinated motion in the Trajectory Planner or buffers down to KFLOP #2 wait for KFLOP to finish the coordinated
motion it has been told to do.
I believe doing these in reverse will cause several problems. First, all the motion might not be sent and then waiting for KFLOP to finish may cause an abrupt stop in the middle of a motion. Secondly the remaining motion will be commanded without a wait for it to finish. So you then tell your User Program to go ahead and Jog axes that are still doing Coordinated motion.
HTH Regards TK
Group: DynoMotion |
Message: 8418 |
From: eric_bassett@ymail.com |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Thank you for the tip. The jogged axis is not a coordinated motion axis. It runs independently (think of it as a routing bit with other axes moving it). ---In dynomotion@yahoogroups.com, <tk@...> wrote:
Hi Eric,
I see one issue. I believe these function calls are out of order:
CM.WaitForSegmentsFinished(true); CM.FlushSegments();
They should be
CM.FlushSegments();
CM.WaitForSegmentsFinished(true);
The idea is to:
#1 flush any remaining coordinated motion in the Trajectory Planner or buffers down to KFLOP #2 wait for KFLOP to finish the coordinated
motion it has been told to do.
I believe doing these in reverse will cause several problems. First, all the motion might not be sent and then waiting for KFLOP to finish may cause an abrupt stop in the middle of a motion. Secondly the remaining motion will be commanded without a wait for it to finish. So you then tell your User Program to go ahead and Jog axes that are still doing Coordinated motion.
HTH Regards TK
Group: DynoMotion |
Message: 8419 |
From: eric_bassett@ymail.com |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Also, the pulses on the jogged axis stop for approximately 300 us and sometimes more each time a corner is reached in the coordinated motion. With the exception of the 300 us intermittent drops, the pulses continue (although the motor has stopped) throughout coordinated motion. ---In dynomotion@yahoogroups.com, <eric_bassett@...> wrote:
Thank you for the tip. The jogged axis is not a coordinated motion axis. It runs independently (think of it as a routing bit with other axes moving it). ---In dynomotion@yahoogroups.com, <tk@...> wrote: Hi Eric,
I see one issue. I believe these function calls are out of order:
CM.WaitForSegmentsFinished(true); CM.FlushSegments();
They should be
CM.FlushSegments();
CM.WaitForSegmentsFinished(true);
The idea is to:
#1 flush any remaining coordinated motion in the Trajectory Planner or buffers down to KFLOP #2 wait for KFLOP to finish the coordinated
motion it has been told to do.
I believe doing these in reverse will cause several problems. First, all the motion might not be sent and then waiting for KFLOP to finish may cause an abrupt stop in the middle of a motion. Secondly the remaining motion will be commanded without a wait for it to finish. So you then tell your User Program to go ahead and Jog axes that are still doing Coordinated motion.
HTH Regards TK
Group: DynoMotion |
Message: 8420 |
From: Tom Kerekes |
Date: 9/30/2013 |
Subject: Re: Create smooth path with Coordinated Motion |
Hi Eric,
Ah! I think I see what is going on. Your Acceleration is set crazy high - 10,000 in/sec2 = 26 Gs !!
This is combining with other settings to
form something KFLOP can't handle:
Your BreakAngle of:
CM.MotionParams.BreakAngle =
180; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |